package br.com.velp.vskygeo.servlet;

import br.com.velp.vskygeo.controller.ControllerPrincipalUtils;
import br.com.velp.vskygeo.dto.UltimoDadoLidoResultadoConsultaDTO;
import br.com.velp.vskygeo.dto.UsuarioLogadoDTO;
import br.com.velp.vskygeo.service.MysqlService;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

/**
 *
 * @author Eduardo
 */
@Component
public class AtualizaMonitorado extends HttpServlet {
    
    @Autowired
    private MysqlService mysqlService;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        HttpSession session = ((HttpServletRequest) request).getSession();
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, getServletConfig().getServletContext());  
        UsuarioLogadoDTO usuarioLogado = (UsuarioLogadoDTO) session.getAttribute("usuarioLogado");
        
        List<UltimoDadoLidoResultadoConsultaDTO> ultimosDadosLidos = this.mysqlService.recuperarUltimosDadosLidos(usuarioLogado);
        
        response.setContentType("text/xml");
        
        PrintWriter out = response.getWriter();
        out.println("<?xml version='1.0' encoding='utf-8' ?>");
        out.println("<monitorados>");
        
            for (UltimoDadoLidoResultadoConsultaDTO ultimoDado : ultimosDadosLidos) {
                
                out.println("<monitorado>");
                    
                    //Renderização dos Dados a Respeito da Ambulância
                    out.println("<codigo>" + ultimoDado.getIdMonitorado() + "</codigo>" );
                    out.println("<descricao>" + ultimoDado.getDescricaoMonitorado() + "</descricao>" );
                    out.println("<descHeader>" + ultimoDado.getDescricaoMonitorado() + "</descHeader>" );
                    out.println("<equipamento>" + ultimoDado.getSerialEquipamento() + "</equipamento>" );
                    out.println("<dataHora>" + ultimoDado.getHoraUltimaPosicao() + "</dataHora>" );
                    out.println("<velocidade>" + ultimoDado.getVelocidade() + "</velocidade>" );
                    out.println("<latitude>" + ultimoDado.getLatitudeStr() + "</latitude>" );
                    out.println("<longitude>" + ultimoDado.getLongitudeStr() + "</longitude>" );
                    out.println("<tempoTransmissao>" + ultimoDado.getTempoTransmissao() + "</tempoTransmissao>" );
                    out.println("<status>" + ControllerPrincipalUtils.obterTitleImagemAmbulancia(ultimoDado) + "</status>" );
                    
                    //Renderização das Imagens e Titles Utilizados No Header do Painel Retrátil de Informações 
                    out.println("<imgAmbMenu>" + ControllerPrincipalUtils.obterImagemAmbulancia(ultimoDado) + "</imgAmbMenu>" );
                    out.println("<titleAmbMenu>" + ControllerPrincipalUtils.obterTitleImagemAmbulancia(ultimoDado) + "</titleAmbMenu>" );
                    out.println("<imgGpsOnOff>" + ControllerPrincipalUtils.obterImagemGpsOnOff(ultimoDado) + "</imgGpsOnOff>" );
                    out.println("<titleGpsOnOff>" + ControllerPrincipalUtils.obterTitleGpsOnOff(ultimoDado) + "</titleGpsOnOff>" );
                    out.println("<imgIgnOnOff>" + ControllerPrincipalUtils.obterImagemIgnicaoOnOff(ultimoDado) + "</imgIgnOnOff>" );
                    out.println("<titleIgnOnOff>" + ControllerPrincipalUtils.obterTitleIgnicaoOnOff(ultimoDado) + "</titleIgnOnOff>" );
                    out.println("<imgIgnTipTransm>" + ControllerPrincipalUtils.obterImagemTipoTransmissao(ultimoDado) + "</imgIgnTipTransm>" );
                    out.println("<titleTipTransm>" + ControllerPrincipalUtils.obterTitleTipoTransmissao(ultimoDado) + "</titleTipTransm>" );
                    
                out.println("</monitorado>");
                
            }
        
        out.println("</monitorados>");
        
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
    
}
